---
displayed_sidebar: "Chinese"
---

# get_json_string,get_json_object

## 功能

解析并获取 `json_str` 内 `json_path` 指定的字符串。如果 `json_str` 或 `json_path` 格式不正确，或者无法找到匹配项，则返回 NULL。

该函数别名为 `get_json_object`.

## 语法

```Haskell
VARCHAR get_json_string(VARCHAR json_str, VARCHAR json_path)
```

## 参数说明

- `json_str`: JSON 字符串，支持的数据类型为 VARCHAR。

- `json_path`: 指定的解析路径，支持的数据类型为 VARCHAR。`json_path`一般使用`$` 符号作为开头；使用 `.` 作为路径分割符；使用 `[]` 表示数组下标， 从 0 开始。

   举例：`$."my.key"[1]`表示的是获取`my.key`对应的数据中第 2 个值。

## 返回值说明

返回值的数据类型为 VARCHAR。如果无法找到对象，则返回 NULL。

## 示例

示例一：从单个字符串中，获取 "k1" 对应的value。

```Plain Text
MySQL > SELECT get_json_string('{"k1":"v1", "k2":"v2"}', "$.k1");
+---------------------------------------------------+
| get_json_string('{"k1":"v1", "k2":"v2"}', '$.k1') |
 +---------------------------------------------------+
| v1                                                |
+---------------------------------------------------+
```

示例二：从多个字符串的数组中，获取第一个字符串内`a`对应的值。

```Plain Text
MySQL > SELECT get_json_object('[{"a":"123", "b": "456"},{"a":"23", "b": "56"}]', '$[0].a');
+------------------------------------------------------------------------------+
| get_json_object('[{"a":"123", "b": "456"},{"a":"23", "b": "56"}]', '$[0].a') |
+------------------------------------------------------------------------------+
| 123                                                                          |
+------------------------------------------------------------------------------+
```

示例三：获取 "my.key" 对应的数组中第二个元素。

```Plain Text
MySQL > SELECT get_json_string('{"k1":"v1", "my.key":["e1", "e2", "e3"]}', '$."my.key"[1]');
+------------------------------------------------------------------------------+
| get_json_string('{"k1":"v1", "my.key":["e1", "e2", "e3"]}', '$."my.key"[1]') |
+------------------------------------------------------------------------------+
| e2                                                                           |
+------------------------------------------------------------------------------+
```

示例四：获取二级路径 `k1.key` -> `k2` 的数组中第一个元素。

```Plain Text
MySQL > SELECT get_json_string('{"k1.key":{"k2":["v1", "v2"]}}', '$."k1.key".k2[0]');
+-----------------------------------------------------------------------+1
| get_json_string('{"k1.key":{"k2":["v1", "v2"]}}', '$."k1.key".k2[0]') |
+-----------------------------------------------------------------------+
| v1                                                                    |
+-----------------------------------------------------------------------+
 ```
